<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>SystemSharp: SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">SystemSharp
   &#160;<span id="projectnumber">0.3</span>
   </div>
   <div id="projectbrief">A system-level modeling framework for designing real-time embedded systems</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Packages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Events</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#properties">Properties</a> &#124;
<a href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt; Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Provides a basic framework for static code analysis of CIL (formerly MSIL) code. Inherit from this class to implement your own analysis.  
 <a href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.png" usemap="#SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;_map" alt=""/>
  <map id="SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;_map" name="SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;_map">
<area href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_contract_class_3_01_t_elem_01_4.html" title="This dummy class is only there to satisfy CodeContracts " alt="SystemSharp.Analysis.Msil.FixPointAnalyzerContractClass&lt; TElem &gt;" shape="rect" coords="0,56,402,80"/>
<area href="class_system_sharp_1_1_analysis_1_1_msil_1_1_invocation_analyzer.html" title="Implements a rather comprehensive static program analysis for determining which fields and local vari..." alt="SystemSharp.Analysis.Msil.InvocationAnalyzer" shape="rect" coords="412,56,814,80"/>
<area href="class_system_sharp_1_1_analysis_1_1_msil_1_1_variability_analyzer.html" title="This class analyzes the variabilities of stack elements and local variables of a given method..." alt="SystemSharp.Analysis.Msil.VariabilityAnalyzer" shape="rect" coords="824,56,1226,80"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a1386e4fd9d6d1841dd549dfe5c76dbc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#a1386e4fd9d6d1841dd549dfe5c76dbc5">FixPointAnalyzer</a> (MethodBase method)</td></tr>
<tr class="memdesc:a1386e4fd9d6d1841dd549dfe5c76dbc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs an instance based on a specific method.  <a href="#a1386e4fd9d6d1841dd549dfe5c76dbc5">More...</a><br/></td></tr>
<tr class="separator:a1386e4fd9d6d1841dd549dfe5c76dbc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae362bb3c8ea2ddb3c65e19007caf4cd9"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#ae362bb3c8ea2ddb3c65e19007caf4cd9">Run</a> ()</td></tr>
<tr class="memdesc:ae362bb3c8ea2ddb3c65e19007caf4cd9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes the analysis.  <a href="#ae362bb3c8ea2ddb3c65e19007caf4cd9">More...</a><br/></td></tr>
<tr class="separator:ae362bb3c8ea2ddb3c65e19007caf4cd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a8bf70e9506d161f07c3b4e7ba6f9d925"><td class="memItemLeft" align="right" valign="top">virtual AbstractStackState&lt; TElem &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#a8bf70e9506d161f07c3b4e7ba6f9d925">Propagate</a> (<a class="el" href="class_s_d_i_l_reader_1_1_i_l_instruction.html">ILInstruction</a> ili, AbstractStackState&lt; TElem &gt; pre)</td></tr>
<tr class="memdesc:a8bf70e9506d161f07c3b4e7ba6f9d925"><td class="mdescLeft">&#160;</td><td class="mdescRight">Propagates a stack state by computing the effects of executing a specific instruction.  <a href="#a8bf70e9506d161f07c3b4e7ba6f9d925">More...</a><br/></td></tr>
<tr class="separator:a8bf70e9506d161f07c3b4e7ba6f9d925"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e0750eda0942241a87604a257dfeda1"><td class="memItemLeft" align="right" valign="top">abstract AbstractStackState<br class="typebreak"/>
&lt; TElem &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#a7e0750eda0942241a87604a257dfeda1">CreateInitialStackState</a> ()</td></tr>
<tr class="memdesc:a7e0750eda0942241a87604a257dfeda1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an initial stack state.  <a href="#a7e0750eda0942241a87604a257dfeda1">More...</a><br/></td></tr>
<tr class="separator:a7e0750eda0942241a87604a257dfeda1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5827609795305556ea8d760d1e57fca8"><td class="memItemLeft" align="right" valign="top">abstract bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#a5827609795305556ea8d760d1e57fca8">Merge</a> (AbstractStackState&lt; TElem &gt; a, AbstractStackState&lt; TElem &gt; b, out AbstractStackState&lt; TElem &gt; m)</td></tr>
<tr class="memdesc:a5827609795305556ea8d760d1e57fca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Merges two stack states.  <a href="#a5827609795305556ea8d760d1e57fca8">More...</a><br/></td></tr>
<tr class="separator:a5827609795305556ea8d760d1e57fca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ad2de0c8e00b141c65cb54b8f3780a4c0"><td class="memItemLeft" align="right" valign="top">Dictionary&lt; OpCode, Func<br class="typebreak"/>
&lt; <a class="el" href="class_s_d_i_l_reader_1_1_i_l_instruction.html">ILInstruction</a>, <br class="typebreak"/>
AbstractStackState&lt; TElem &gt;<br class="typebreak"/>
, AbstractStackState&lt; TElem &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#ad2de0c8e00b141c65cb54b8f3780a4c0">_pmap</a></td></tr>
<tr class="memdesc:ad2de0c8e00b141c65cb54b8f3780a4c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps each CIL op-code to an according propagation function - must be populated by overriding class!  <a href="#ad2de0c8e00b141c65cb54b8f3780a4c0">More...</a><br/></td></tr>
<tr class="separator:ad2de0c8e00b141c65cb54b8f3780a4c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6ace45a8938da07d73cac8b439a8ad5"><td class="memItemLeft" align="right" valign="top">AbstractStackState&lt; TElem &gt;[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#ab6ace45a8938da07d73cac8b439a8ad5">_stackStates</a></td></tr>
<tr class="memdesc:ab6ace45a8938da07d73cac8b439a8ad5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assigns a stack state to each instruction index.  <a href="#ab6ace45a8938da07d73cac8b439a8ad5">More...</a><br/></td></tr>
<tr class="separator:ab6ace45a8938da07d73cac8b439a8ad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="properties"></a>
Properties</h2></td></tr>
<tr class="memitem:a2edaff572909abbc5d59c96a0b75983b"><td class="memItemLeft" align="right" valign="top">MethodBase&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#a2edaff572909abbc5d59c96a0b75983b">Method</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a2edaff572909abbc5d59c96a0b75983b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the method which is subject to analysis.  <a href="#a2edaff572909abbc5d59c96a0b75983b">More...</a><br/></td></tr>
<tr class="separator:a2edaff572909abbc5d59c96a0b75983b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56f0c90c078ef7ffe3f67712e055ab19"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#a56f0c90c078ef7ffe3f67712e055ab19">AnalysisDone</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a56f0c90c078ef7ffe3f67712e055ab19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true iff the analysis was completed.  <a href="#a56f0c90c078ef7ffe3f67712e055ab19">More...</a><br/></td></tr>
<tr class="separator:a56f0c90c078ef7ffe3f67712e055ab19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38f51e7d537865f7c7923bddbaa59355"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_system_sharp_1_1_analysis_1_1_method_code.html">MethodCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html#a38f51e7d537865f7c7923bddbaa59355">CFG</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a38f51e7d537865f7c7923bddbaa59355"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the control-flow graph of the analyzed method.  <a href="#a38f51e7d537865f7c7923bddbaa59355">More...</a><br/></td></tr>
<tr class="separator:a38f51e7d537865f7c7923bddbaa59355"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Provides a basic framework for static code analysis of CIL (formerly MSIL) code. Inherit from this class to implement your own analysis. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">TElem</td><td>The type which represents an element of the execution stack.</td></tr>
  </table>
  </dd>
</dl>
<p>The idea of fix point analysis is as follows: Each instruction modifies the state of the program stack. If we propagate some initial state from one instruction to the next (according to program flow), we can infer state information on each program position. If we encounter a conditional branch, we will take both directions, i.e. analysis will fork (since analysis is static). Wherever two program flows join again, this will lead to two program states being merged. Starting from each merged state, we recompute the analysis until we get convergence. This is called the fix point, since merging any state with the newly computed state results in a state which is equivalent to the merged state. </p>
<p>FIXME: poor software design</p>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00473">473</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a1386e4fd9d6d1841dd549dfe5c76dbc5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.FixPointAnalyzer </td>
          <td>(</td>
          <td class="paramtype">MethodBase&#160;</td>
          <td class="paramname"><em>method</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructs an instance based on a specific method. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">method</td><td>the method to be analyzed</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00500">500</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a7e0750eda0942241a87604a257dfeda1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">abstract AbstractStackState&lt;TElem&gt; SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.CreateInitialStackState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates an initial stack state. </p>
<dl class="section return"><dt>Returns</dt><dd>the initial stack state</dd></dl>

<p>Implemented in <a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_contract_class_3_01_t_elem_01_4.html#ab00a644952496a453858ae8041e58e9a">SystemSharp.Analysis.Msil.FixPointAnalyzerContractClass&lt; TElem &gt;</a>, <a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_invocation_analyzer.html#af96733f3f230269a0e3be724c2e4c06d">SystemSharp.Analysis.Msil.InvocationAnalyzer</a>, and <a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_variability_analyzer.html#a2ab664d190a7d1d81e9554c7a85f9179">SystemSharp.Analysis.Msil.VariabilityAnalyzer</a>.</p>

</div>
</div>
<a class="anchor" id="a5827609795305556ea8d760d1e57fca8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">abstract bool SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.Merge </td>
          <td>(</td>
          <td class="paramtype">AbstractStackState&lt; TElem &gt;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AbstractStackState&lt; TElem &gt;&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">out AbstractStackState&lt; TElem &gt;&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Merges two stack states. </p>
<p>Merging stack states is necessary wherever program flow joins.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>a stack state</td></tr>
    <tr><td class="paramname">b</td><td>another stack state</td></tr>
    <tr><td class="paramname">m</td><td>the merged stack state</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false iff m and a are equivalent in a problem-specific sense.</dd></dl>

<p>Implemented in <a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_contract_class_3_01_t_elem_01_4.html#a1d03ae678b60bb0ab1a21647eb6b7692">SystemSharp.Analysis.Msil.FixPointAnalyzerContractClass&lt; TElem &gt;</a>.</p>

</div>
</div>
<a class="anchor" id="a8bf70e9506d161f07c3b4e7ba6f9d925"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual AbstractStackState&lt;TElem&gt; SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.Propagate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_s_d_i_l_reader_1_1_i_l_instruction.html">ILInstruction</a>&#160;</td>
          <td class="paramname"><em>ili</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AbstractStackState&lt; TElem &gt;&#160;</td>
          <td class="paramname"><em>pre</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Propagates a stack state by computing the effects of executing a specific instruction. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ili</td><td></td></tr>
    <tr><td class="paramname">pre</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00513">513</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="ae362bb3c8ea2ddb3c65e19007caf4cd9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.Run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Executes the analysis. </p>

<p>Reimplemented in <a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_invocation_analyzer.html#a7e53151d167915da51d234a0785b3a79">SystemSharp.Analysis.Msil.InvocationAnalyzer</a>, and <a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_variability_analyzer.html#a877cbd65bdc76def8c605e9a63e6d3bc">SystemSharp.Analysis.Msil.VariabilityAnalyzer</a>.</p>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00551">551</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="ad2de0c8e00b141c65cb54b8f3780a4c0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Dictionary&lt;OpCode, Func&lt;<a class="el" href="class_s_d_i_l_reader_1_1_i_l_instruction.html">ILInstruction</a>, AbstractStackState&lt;TElem&gt;, AbstractStackState&lt;TElem&gt; &gt; &gt; SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;._pmap</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div>
<div class="line">            <span class="keyword">new</span> Dictionary&lt;OpCode, Func&lt;ILInstruction, AbstractStackState&lt;TElem&gt;, AbstractStackState&lt;TElem&gt;&gt;&gt;()</div>
</div><!-- fragment -->
<p>Maps each CIL op-code to an according propagation function - must be populated by overriding class! </p>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00488">488</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="ab6ace45a8938da07d73cac8b439a8ad5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">AbstractStackState&lt;TElem&gt; [] SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;._stackStates</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Assigns a stack state to each instruction index. </p>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00494">494</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<h2 class="groupheader">Property Documentation</h2>
<a class="anchor" id="a56f0c90c078ef7ffe3f67712e055ab19"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.AnalysisDone</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns true iff the analysis was completed. </p>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00483">483</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a38f51e7d537865f7c7923bddbaa59355"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_system_sharp_1_1_analysis_1_1_method_code.html">MethodCode</a> SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.CFG</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the control-flow graph of the analyzed method. </p>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00546">546</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a2edaff572909abbc5d59c96a0b75983b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">MethodBase SystemSharp.Analysis.Msil.FixPointAnalyzer&lt; TElem &gt;.Method</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the method which is subject to analysis. </p>

<p>Definition at line <a class="el" href="_fix_point_analysis_8cs_source.html#l00478">478</a> of file <a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_fix_point_analysis_8cs_source.html">FixPointAnalysis.cs</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_system_sharp.html">SystemSharp</a></li><li class="navelem"><a class="el" href="namespace_system_sharp_1_1_analysis.html">Analysis</a></li><li class="navelem"><a class="el" href="namespace_system_sharp_1_1_analysis_1_1_msil.html">Msil</a></li><li class="navelem"><a class="el" href="class_system_sharp_1_1_analysis_1_1_msil_1_1_fix_point_analyzer_3_01_t_elem_01_4.html">FixPointAnalyzer< TElem ></a></li>
    <li class="footer">Generated on Thu Dec 26 2013 14:21:54 for SystemSharp by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>
